import { TextNode } from "../mnodes";

/**
 * 分隔符栈
 * 数据结构双向链表
 * @param char：字符
 * @param count：数量
 * @param mnode：字符对应节点树的节点
 * @param currentCount：当前节点数量（后续需要删除）
 * @param prev：兄弟节点->前一个节点指向
 * @param next：兄弟节点->后一个节点指向
 */
export default class DelimitersStack {
    public char : string = ''
    public count : number = 0
    public currentCount : number = 0
    public mnode : TextNode;
    public prev : DelimitersStack | null = null;
    public next : DelimitersStack | null = null;
    constructor(char:string,count:number,mnode:TextNode){
        this.char = char
        this.count = count
        this.currentCount = count
        this.mnode = mnode
    }

    /** 从链表中删除当前节点 */ 
    remove(){
        if(this.prev){
            this.prev.next = this.next
        }
        if(this.next){
            this.next.prev = this.prev
        }
    }

    /** 删除链表某个区间中(不包含首尾）的节点 */
    static delBetween(left :DelimitersStack,right :DelimitersStack){
        if(left.next !== right){
            left.next = right
            right.prev = left
        }
    }
}